---
displayed_sidebar: "Chinese"
---

# all_match

## 功能

判断数组中的所有元素是否都匹配谓词中 (predicate) 指定的条件。

- 如果所有元素都匹配或数组为空，则返回 true (1)。

- 如果有一个或多个元素不匹配，则返回 false (0)。

- 如果数组中有元素为 NULL，而其他元素都满足条件，则返回 NULL。

该函数从 3.0.6 版本开始支持。

## 语法

```Haskell
all_match(lambda_function, arr1, arr2...)
```

判断数组中的所有元素是否都匹配 Lambda 表达式中指定的条件。

## 参数说明

- `arr`: 进行判断的数组。

- `lambda_function`: 作为匹配条件的 Lambda 表达式。

## 返回值说明

返回 BOOLEAN 类型的值。

## 使用说明

- 关于 Lambda 表达式的使用注意事项，参见 [array_map()](array_map.md)。
- 如果输入的数组为 NULL 或者 Lambda 表达式的结果为 NULL，则返回 NULL。
- 如果第一个数组为空，则返回 `true`。
- 如果要将该函数应用在 MAP 上，可以将 `all_match((k,v)->k>v,map)` 改写为 `all_match(map_values(transform_values((k,v)->k>v, map)))`。例如，`select all_match(map_values(transform_values((k,v)->k>v, map{2:1})));` 返回 1。

## 示例

判断数组 `x` 中的元素是否都小于数组 `y` 中的元素。

```Plain
select all_match((x,y) -> x < y, [1,2,-8], [4,5,6]);
+---------------------------------------------------+
| all_match((x, y) -> x < y, [1, 2, -8], [4, 5, 6]) |
+---------------------------------------------------+
|                                                 1 |
+---------------------------------------------------+

select all_match((x,y) -> x < y, [1,2,null], [4,5,6]);
+-----------------------------------------------------+
| all_match((x, y) -> x < y, [1, 2, NULL], [4, 5, 6]) |
+-----------------------------------------------------+
|                                                NULL |
+-----------------------------------------------------+

select all_match((x,y) -> x < y, [1,2,8], [4,5,6]);
+--------------------------------------------------+
| all_match((x, y) -> x < y, [1, 2, 8], [4, 5, 6]) |
+--------------------------------------------------+
|                                                0 |
+--------------------------------------------------+

select all_match((x,y) -> x < y, [], []);
+------------------------------------+
| all_match((x, y) -> x < y, [], []) |
+------------------------------------+
|                                  1 |
+------------------------------------+

select all_match((x,y) -> x < y, null, [4,5,6]);
+---------------------------------------------+
| all_match((x, y) -> x < y, NULL, [4, 5, 6]) |
+---------------------------------------------+
|                                        NULL |
+---------------------------------------------+
```
